package web后端.事务管理.进阶;

/**
 * 事务进阶<p></p>
 * 详见项目<a href="#">springboot-study-auxiliary-system</a>
 */
public class index {
    /**
     * 注解&#064;Transactional中两个主要的属性：<p>
     * 1、rollbackFor（事务回滚）<p>
     * 2、propagation（事务传播行为）<p></p>
     * <p></p>
     * <p>
     * rollbackFor<p>
     * 默认情况下，只有出现运行时异常 {@link RuntimeException} 时才会回滚<p>
     * 而rollbackFor就用于控制出现何种异常类型时回滚事务<p></p>
     * <p></p>
     * <p>
     * propagation<p>
     * 事务传播行为：指的就是一个事务方法被另一个事务方法调用时，这个事务方法应该如何进行事务控制<p></p>
     * 比如：A方法调用B方法，A方法是事务方法（加了@Transactional），B方法是事务方法（加了@Transactional）<p>
     * 这两个方法都具有事务<p>
     * 此时，A方法调用B方法，就出现一个问题：<p>
     * B方法在运行的时候是加入到A方法的事务中来，还是新建一个新事务<p>
     * 这个就涉及到了事务的传播行为<p>
     * 我们要想控制事务的传播行为就可以在@Transactional中加入propagation属性（配置在被调用事务上）<p></p>
     *
     * 常见的事务传播行为：<p>
     * REQUIRED：默认值，需要事务。有则加入，无则创建新事务<p>
     * REQUIRES_NEW：需要新事务。无论有无，都创建新事务<p>
     * SUPPORTS：支持事务。有则加入，无责在无事务状态下运行<p>
     * NOT_SUPPORTED：不支持事务。在无事务状态下运行，若当前存在已有事务，则挂起当前事务<p>
     * MANDATORY：必须有事务，否则抛异常<p>
     * NEVER：必须没事务，否则抛异常<p>
     *
     *
     *
     *
     * @param args
     */
    public static void main(String[] args) {

    }
}
